
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>什么是CAP理论？它在分布式系统中的应用有哪些？ - 学习卡片</title>
      <style>
        body { font-family: sans-serif; background-color: #f0f8ff; color: #333; display: flex; flex-direction: column; align-items: center; padding: 50px 20px; }
        .header h1 { font-size: 32px; }
        .grid-container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; width: 100%; max-width: 1200px; }
        .card-container { perspective: 1200px; cursor: pointer; height: 250px; }
        .card { width: 100%; height: 100%; position: relative; transform-style: preserve-3d; transition: transform 0.7s; border-radius: 16px; box-shadow: 0 4px 16px rgba(0,0,0,0.08); }
        .card-container.flipped .card { transform: rotateY(180deg); }
        .card-face { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; display: flex; flex-direction: column; box-sizing: border-box; border-radius: 16px; background-color: #fff; padding: 24px; }
        .card-back { background-color: #f0fff4; transform: rotateY(180deg); justify-content: space-between; }
        .card-category { font-size: 14px; color: #0052d9; margin-bottom: 8px; font-weight: 500; }
        .card-question { font-size: 20px; font-weight: 500; flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; }
        .card-answer-wrapper { flex-grow: 1; overflow-y: auto; }
        .card-answer { font-size: 15px; line-height: 1.7; }
        .card-footer { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 16px; margin-top: 16px; }
        .card-source { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 12px; margin-top: 12px; }
      </style>
    </head>
    <body>
      <div class="header">
        <h1>什么是CAP理论？它在分布式系统中的应用有哪些？ - 学习卡片</h1>
      </div>
      <div class="grid-container">
        
    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">理论</div>
          <div class="card-question">CAP理论的核心内容是什么？它揭示了分布式数据存储中哪三个特性之间的权衡关系？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">理论</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">CAP理论揭示了在一个分布式系统中，一致性（Consistency）、可用性（Availability）和分区容错性（Partition Tolerance）这三个特性之间存在权衡关系。该理论指出，一个分布式系统不可能同时完全满足这三项特性，最多只能选择其中的两项来优化。</div>
          </div>
          <div class="card-source">来源: 什么是CAP理论？它在分布式系统中的应用有哪些？</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">特性</div>
          <div class="card-question">在CAP理论中，如何定义“一致性”（Consistency）？请说明其不同级别的实现。</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">特性</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">一致性（Consistency）是指在分布式系统中的所有节点都能保证数据的一致性，即无论从哪个节点读取数据，结果都是相同的。换言之，一旦一个写操作完成，所有后续的读操作都必须返回该写操作的结果。其实现级别包括：强一致性、弱一致性和最终一致性。</div>
          </div>
          <div class="card-source">来源: CAP理论的三要素 -> 1. 一致性（Consistency）</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">特性</div>
          <div class="card-question">在CAP理论中，“分区容错性”（Partition Tolerance）指的是什么？为什么它在现代分布式系统中通常是必选项？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">特性</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">分区容错性是指系统在面对网络分区（由于网络故障导致节点间无法通信）时仍能继续运行并提供服务。在大规模分布式系统中，网络分区是不可避免的现象，如果系统没有分区容错能力，一旦发生网络分区，整个系统就可能无法提供服务，这在实际应用中是不可接受的。</div>
          </div>
          <div class="card-source">来源: CAP理论的三要素 -> 3. 分区容错性（Partition Tolerance）</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">模式</div>
          <div class="card-question">当网络分区发生时，CAP理论揭示了系统设计者必须在哪两个特性之间做出权衡？请分别描述这两种选择。</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">模式</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">当网络分区发生时，系统设计者必须在一致性（Consistency）和可用性（Availability）之间做出权衡。选择一（CP）：牺牲可用性以保证一致性，此时系统可能会暂停响应请求以等待数据同步。选择二（AP）：牺牲一致性以保证可用性，此时各分区内的节点可能独立处理请求，导致短时间内数据不一致。</div>
          </div>
          <div class="card-source">来源: CAP理论的权衡与取舍 -> 1. 一致性、可用性和分区容错性的相互关系</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">什么是CP系统？请列举一个典型的应用场景并解释其原因。</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">CP系统（Consistency and Partition Tolerance）是在发生网络分区时，选择放弃可用性来确保数据一致性的系统。典型的应用场景是金融交易系统，因为这类系统要求数据具有强一致性，所有节点必须看到相同的账户余额等数据，以防止数据丢失或出现不一致的情况。</div>
          </div>
          <div class="card-source">来源: CAP理论的权衡与取舍 -> （1）一致性优先设计（CP系统）</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">什么是AP系统？请以Cassandra为例，说明它是如何优先保证可用性的。</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">AP系统（Availability and Partition Tolerance）是在发生网络分区时，选择放弃数据一致性来确保系统可用性的系统。Cassandra通过将数据复制到多个节点并允许节点间异步通信来实现高可用性。当网络分区发生时，每个分区内的节点仍能独立提供读写服务，并通过最终一致性（Eventual Consistency）来确保分区恢复后数据最终会同步。</div>
          </div>
          <div class="card-source">来源: CAP理论的应用实例 -> 2. 可用性优先的系统（AP系统）</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">理论</div>
          <div class="card-question">根据文档，促使系统架构从单体向分布式演进的主要推动力有哪些？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">理论</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">主要推动力有三点：1. 数据规模的爆炸性增长，传统架构无法满足海量数据存储和处理的需求；2. 对高可用性和容错性的需求，分布式系统通过分散节点来避免单点故障；3. 全球化应用的需求，分布式部署可以满足全球用户对低延迟和高可用性的访问需求。</div>
          </div>
          <div class="card-source">来源: CAP理论的提出背景 -> 提出背景</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">为什么说CA系统（一致性与可用性）在现实的分布式环境中很难实现？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">因为在真实的分布式环境中，网络分区（Partition）的风险总是存在的，而CA系统在设计上无法容忍分区故障。一旦发生网络分区，CA系统就无法同时保证一致性和可用性。因此，这种模型更适用于网络连接非常稳定可靠的小型、本地化集群。</div>
          </div>
          <div class="card-source">来源: CAP理论的权衡与取舍 -> （3）分区容错性优先设计（CA系统）</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">文档中提到MongoDB在CAP理论中具有灵活性，请问这是如何实现的？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">MongoDB的灵活性体现在其一致性模型是可配置的。在默认配置下，它采用最终一致性模型，表现为AP系统。但通过设置“写关注级别”（write concern）可以实现强一致性。在这种严格模式下，MongoDB会确保所有复制节点都同步最新数据后才返回成功，从而表现为CP系统，会在网络分区时牺牲可用性来保证一致性。</div>
          </div>
          <div class="card-source">来源: CAP理论的应用实例 -> 1. 一致性优先的系统（CP系统）</div>
        </div>
      </div>
    </div>

      </div>
    </body>
    </html>
